package com.diandian.backend.store.service;

import com.diandian.base.boot.starter.exception.DefaultException;
import com.diandian.base.boot.starter.response.PageResult;
import com.diandian.backend.store.domain.StoreMeituanShangouStoreInfo;
import com.diandian.backend.store.dto.*;
import com.diandian.backend.store.mapper.StoreMeituanShangouStoreInfoMapper;
import com.diandian.backend.store.resp.StoreMeituanShangouStoreInfoDetailResp;
import com.diandian.backend.store.resp.StoreMeituanShangouStoreInfoPageResp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.diandian.backend.store.resp.StoreMeituanShangouStoreInfoListResp;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class StoreMeituanShangouStoreInfoService {

    @Autowired
    private StoreMeituanShangouStoreInfoMapper storeMeituanShangouStoreInfoMapper;

    public PageResult page(StoreMeituanShangouStoreInfoPageParamDTO requestDTO){

        requestDTO.check();
        int pageNum = requestDTO.getPageNum();
        int pageSize = requestDTO.getPageSize();

        // 查询总数
        int totalCount = storeMeituanShangouStoreInfoMapper.getCount(requestDTO);

        // 查询数据集合
        List<StoreMeituanShangouStoreInfo> dataList = storeMeituanShangouStoreInfoMapper.getPage(requestDTO, requestDTO.getPageSize(), (requestDTO.getPageNum() - 1) * requestDTO.getPageSize());

        // 组装数据
        List<StoreMeituanShangouStoreInfoPageResp> respList = new ArrayList<>();
        if(dataList != null && dataList.size() > 0){
            dataList.stream().forEach( x ->{
                StoreMeituanShangouStoreInfoPageResp item = new StoreMeituanShangouStoreInfoPageResp();
                item.setId(x.getId());
                item.setOfflineCode(x.getOfflineCode());
                item.setOnlineCode(x.getOnlineCode());
                item.setOnlineName(x.getOnlineName());
                item.setStauts(x.getStauts());
                item.setAddress(x.getAddress());
                item.setFirstTag(x.getFirstTag());
                item.setCallCenter(x.getCallCenter());
                item.setContactUserName(x.getContactUserName());
                item.setContactTel(x.getContactTel());
                item.setEcommerceAccountPhone(x.getEcommerceAccountPhone());
                item.setShippingTime(x.getShippingTime());
                item.setLat(x.getLat());
                item.setLng(x.getLng());
                item.setRemark(x.getRemark());
                item.setBelong(x.getBelong());
                item.setCreateUserId(x.getCreateUserId());
                item.setCreateUserName(x.getCreateUserName());
                item.setCreateTime(x.getCreateTime());
                item.setOrgId(x.getOrgId());
                item.setOrgCode(x.getOrgCode());
                item.setUpdateUserId(x.getUpdateUserId());
                item.setUpdateUserName(x.getUpdateUserName());
                item.setUpdateTime(x.getUpdateTime());
                item.setDel(x.getDel());
             respList.add(item);
            });
        }

        return new PageResult(pageNum, pageSize, totalCount, respList);
    }

    public List<StoreMeituanShangouStoreInfoListResp> getList(StoreMeituanShangouStoreInfoListParamDTO requestDTO){

        // 查询数据集合
        List<StoreMeituanShangouStoreInfo> dataList = storeMeituanShangouStoreInfoMapper.getList(requestDTO);

        // 组装数据
        List<StoreMeituanShangouStoreInfoListResp> respList = new ArrayList<>();
        if(dataList != null && dataList.size() > 0){
            dataList.stream().forEach( x ->{
                StoreMeituanShangouStoreInfoListResp item = new StoreMeituanShangouStoreInfoListResp();
                item.setId(x.getId());
                item.setOfflineCode(x.getOfflineCode());
                item.setOnlineCode(x.getOnlineCode());
                item.setOnlineName(x.getOnlineName());
                item.setStauts(x.getStauts());
                item.setAddress(x.getAddress());
                item.setFirstTag(x.getFirstTag());
                item.setCallCenter(x.getCallCenter());
                item.setContactUserName(x.getContactUserName());
                item.setContactTel(x.getContactTel());
                item.setEcommerceAccountPhone(x.getEcommerceAccountPhone());
                item.setShippingTime(x.getShippingTime());
                item.setLat(x.getLat());
                item.setLng(x.getLng());
                item.setRemark(x.getRemark());
                item.setBelong(x.getBelong());
                item.setCreateUserId(x.getCreateUserId());
                item.setCreateUserName(x.getCreateUserName());
                item.setCreateTime(x.getCreateTime());
                item.setOrgId(x.getOrgId());
                item.setOrgCode(x.getOrgCode());
                item.setUpdateUserId(x.getUpdateUserId());
                item.setUpdateUserName(x.getUpdateUserName());
                item.setUpdateTime(x.getUpdateTime());
                item.setDel(x.getDel());
                respList.add(item);
            });
        }

        return respList;
    }

    public StoreMeituanShangouStoreInfoDetailResp getDetail(StoreMeituanShangouStoreInfoDetailParamDTO param) {

        StoreMeituanShangouStoreInfo dbData = storeMeituanShangouStoreInfoMapper.getDetail(param);
        if(dbData == null){
            return null;
        }

        StoreMeituanShangouStoreInfoDetailResp result = new StoreMeituanShangouStoreInfoDetailResp();
        result.setId(dbData.getId());
        result.setOfflineCode(dbData.getOfflineCode());
        result.setOnlineCode(dbData.getOnlineCode());
        result.setOnlineName(dbData.getOnlineName());
        result.setStauts(dbData.getStauts());
        result.setAddress(dbData.getAddress());
        result.setFirstTag(dbData.getFirstTag());
        result.setCallCenter(dbData.getCallCenter());
        result.setContactUserName(dbData.getContactUserName());
        result.setContactTel(dbData.getContactTel());
        result.setEcommerceAccountPhone(dbData.getEcommerceAccountPhone());
        result.setShippingTime(dbData.getShippingTime());
        result.setLat(dbData.getLat());
        result.setLng(dbData.getLng());
        result.setRemark(dbData.getRemark());
        result.setBelong(dbData.getBelong());
        result.setCreateUserId(dbData.getCreateUserId());
        result.setCreateUserName(dbData.getCreateUserName());
        result.setCreateTime(dbData.getCreateTime());
        result.setOrgId(dbData.getOrgId());
        result.setOrgCode(dbData.getOrgCode());
        result.setUpdateUserId(dbData.getUpdateUserId());
        result.setUpdateUserName(dbData.getUpdateUserName());
        result.setUpdateTime(dbData.getUpdateTime());
        result.setDel(dbData.getDel());
        return result;
    }

    public void updateById(StoreMeituanShangouStoreInfoUpdateByIdParamDTO param) {
        param.check();

        StoreMeituanShangouStoreInfoDetailParamDTO queryDetailDTO = new StoreMeituanShangouStoreInfoDetailParamDTO();
        queryDetailDTO.setId(param.getId());
        StoreMeituanShangouStoreInfo dbData = storeMeituanShangouStoreInfoMapper.getDetail(queryDetailDTO);
        if(dbData == null){
            throw new DefaultException("更新的记录不存在");
        }

        storeMeituanShangouStoreInfoMapper.updateById(param);
    }

    public void updateBasicInfo(StoreMeituanShangouStoreInfoUpdateByIdParamDTO param) {
        param.check();
        storeMeituanShangouStoreInfoMapper.updateBasicInfo(param);
    }

    public void deleteById(StoreMeituanShangouStoreInfoDeleteByIdParamDTO paramDTO) {
        paramDTO.check();
        storeMeituanShangouStoreInfoMapper.deleteById(paramDTO);
    }

    public void add(StoreMeituanShangouStoreInfoAddParamDTO param) {
        param.setCreateTime(new Date());
        param.setDel(0);
        storeMeituanShangouStoreInfoMapper.add(param);
    }
}
